/*
 * Copyright © 2021 http://www.hn-szzy.com/ All rights reserved.
 *//*

package com.xjh.utils.exception;

*/
/**
 * @author： 徐建华
 * @date： 2021/12/28
 * @description：
 *//*

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

*/
/**
 * 异常处理器(类)
 *//*

//此类在拦截到的controller方法之前执行
//实现HandlerExceptionResolver接口
public class SysExceptionResolver implements HandlerExceptionResolver{

    */
/**
     * 处理异常业务逻辑
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @return
     *//*

    //四个参数:request,response,handler,exception
    //一个疑问:异常处理器到底什么时候执行?拦截到异常后,将异常传入执行
    //异常处理器和拦截器不是一个东西
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        // 创建一个空的异常类对象
        SysException e = null;
        //检查捕获的对象的类型(判断是否是自定义类型异常)
        */
/*instanceof是java中的二元运算符,左边是对象,右边是类,
        如果对象是该类或者子类所创建对象,返回true,否则返回false
        * *//*

        System.out.println("测试controller和拦截器的执行顺序");//结果是先执行controller再执行拦截器
        if(ex instanceof SysException){
            //是,将自定义对象强转成该类型对象(为了拿到数据?).
            e = (SysException)ex;
            //System.out.println("啥"+e.getMessage());
        }else{
            //不是,新建异常类对象:显示系统正在维护
            e = new SysException("系统正在维护....");
        }
        // 创建ModelAndView对象,将对象存到request域中,jsp可以通过EL表达式取出展示
        ModelAndView mv = new ModelAndView();
        mv.addObject("errorMsg",e.getMessage());//向域中存储提示信息
        mv.setViewName("error");//将要跳转到的页面

        return mv;
    }

}
*/
